The present invention is related to computer graphing systems. In particular, the present invention is related to transforming and rendering shapes on a computer output device.
Many of the images that appear on a computer screen or on a computer-printed page are generated by passing a base image through some form of transform. This technique allows a computer to display many different versions of the base image without storing all of the versions in long-term memory. For example, using a single base image of the letter “b”, a computer can generate large versions of the letter, can change the location or orientation of the letter on the display or page, or can skew the letter by slanting its top to the left or to the right.
In two-dimensional graphics, transforms have historically been limited to affine transforms where all parallel lines in the base image remain parallel in the transformed image. Affine transforms include scaling, rotating, skewing, and translating (i.e. changing location).
Two techniques have been developed for performing affine transforms. In one technique, each pixel of the base image is transformed separately by transforming the coordinates of the pixel. Thus, if there were one hundred pixels in an image, one hundred transforms would be performed. In the other technique, pixels within a base image are described using a set of equations known as a path. Typically, the x-coordinates of the pixels are described using one equation and the y-coordinates of the pixels are described using a separate equation. These paths are then transformed to produce a new set of equations that describe the pixels of the transformed image.
Recently, more complex non-affine transforms have been developed, which provide a three-dimensional appearance to two-dimensional objects. In a non-affine transform, lines that are parallel in the base image do not necessarily remain parallel in the transformed image. Because of the complexity of these transforms, only pixels have been transformed in the prior art. To transform more complex curves, the prior art transforms selected points along the curve and then connects the transformed points together to construct the transformed curve.
This technique for performing non-affine transforms is less than ideal because a large number of data points must be transformed for very complex curves. In addition, the exact description of the curve is lost in the transform. This can cause the curve to appear jagged in the transformed space, especially if further transforms are performed on the points approximating the curve.